import axios from 'axios'

// 得到单独的实例
const instance = axios.create({
  // 超时时长设置
  timeout: 10000
})

// 响应拦截器
instance.interceptors.response.use(
  res => res.data,
  err => Promise.reject(err)
)

// 封装请求方法
// - restFulApi
// - get 获取数据 200
// - post 添加数据 201
// - put/patch 修改数据 put全量/patch增量 201/202
// - delete 删除数据 204(没有响应体)

// get请求方式
export const get = (url, config = {}) => instance.get(url, config)

// post请求方式
export const post = (url, data = {}, config = {}) => {
  if ({}.toString.call(data) !== '[object Object]') {
    throw new Error('类型不合法')
  }
  return instance.post(url, data, config)
}

export const post2 = (url, data, config) => {
  return fetch(url, {
    method: 'post',
    body: JSON.stringify(data),
    headers: {
      'content-type': 'application/json'
    }
  })
    .then(ret => ret.json())
    .then(data => data)
}

export const post4 = async (url, data, config) => {
  return await (await fetch(url, {
    method: 'post',
    body: JSON.stringify(data),
    headers: {
      'content-type': 'application/json'
    }
  })).json()
}